<?php
namespace Admin\Controller;


class TeacherController extends AdminController {
	/**
	 * 教师信息
	 * 
	 * 		获取页面参数，获取session中学校数据，查询教师信息。
	 */
    public function index(){
        $teachername       	=   I('teachername');
        $map['status']  	=   array('in','0,1');//教师状态（-1：已删除，0：禁用，1：正常）
		$map['teachername|teachercount'] =   array('like', '%'.(string)$teachername.'%');
        $map['schoolid']	=	session('user_auth.schoolid');
        $teacherList		= 	$this->lists('Teacher', $map);
        $this->assign('_list', $teacherList);
        Cookie('__forward__',$_SERVER['REQUEST_URI']);
        $this->display();
    }
	
	/**
     * 新建教师
	 * @param string $username		用户名（前段需加上学校简称）
	 * @param string $teachername	教师姓名
	 * @param string $teacher_tel	手机号码
     *
     * 		获取页面参数，处理用户名，调用UserApi的方法注册用户，新建教师，为教师赋权。
     *
     * 		查询学校简称显示页面。
     */
    public function add(){
    	if(IS_POST){
    		$teacherModel	=	D('Teacher');
    		$ucMemberModel  =   D('UcenterMember');
    		$teacher		=	M('Teacher')->create();//采集页面数据
    		if(!$teacher['teachercount']){//教师用户名为空
    			$this->error('教师用户名不能为空！');
    		} else {
	    		$user['username']=session('user_auth.school_short_name').$teacher['teachercount'];//处理教师用户名。
	    		$user=$ucMemberModel->create($user);//ucMember模型验证用户名是否符合注册要求。
	    		if (!$user) {//验证失败，提示验证错误。
	    			$this->error($ucMemberModel->getError());
	    		}else{//用户名验证成功
	    			$teacherModel->startTrans();//开启事务
	    			$uid    =   $ucMemberModel->add($user);//ucMember添加用户
	    			resetPwd($uid);//设置用户密码（123456）
	    			/*补充修改页面数据*/
		    		$teacher['status']		=	1;//教师状态（-1：已删除，0：禁用，1：正常）
		    		$teacher['isdistribution']		=	0;//是否已分配（是否被分配成班主任，0表示没有被分配，1表示已经被分配，默认为0）
		    		$teacher['schoolid']	=	session('user_auth.schoolid');
		    		$teacher['schoolname']	=	session('user_auth.schoolname');
		    		$teacher['teachercount']=	$user['username'];
	    			$teacher=$teacherModel->create($teacher);//教师模型验证数据是否符合添加要求。
		    		if (!$teacher){     // 如果创建失败 表示验证没有通过，回滚事务， 输出错误提示信息
		    			$teacherModel->rollback();
		    			$this->error($teacherModel->getError());
		    		}else{     // 数据验证通过 
		    			/*补充数据*/
		    			$teacher['uid'] = $uid;
		    			if(!M('Teacher')->add($teacher)){//添加教师失败则回滚事务， 输出错误提示信息
		    				$teacherModel->rollback();
		    				$this->error('教师添加失败！');
		    			} else {//添加教师成功后给教师赋权
		    				$authTeacher = array('uid'=>$uid,'group_id'=>1);
		    				if(!M('AuthGroupTeacherAccess')->add($authTeacher)){//教师赋权失败则回滚事务， 输出错误提示信息
		    					$teacherModel->rollback();
		    					$this -> error('教师添加失败！');
		    				} else{
		    					$teacherModel->commit();//教师赋权成功后，整个业务完成，提交事务。跳转页面。
		    					$this->success('教师添加成功！',Cookie('__forward__'));
		    				}
		    			}
		    		}
	    		}
    		}
    	} else {
    		$this->assign('TEACHER_PRO',C("TEACHER_PRO"));
    		$this->assign('TEACHER_TITLE',C("TEACHER_TITLE"));
    		$this->assign('TEACHER_COURSE',C("TEACHER_COURSE"));
    		$this->display();
    	}
    }
	
	/**
	 * 修改状态
	 * @param string $method	传入的修改状态命令
	 *		forbiduser	禁用用户
	 *		resumeuser	启用用户
	 *		deleteuser	删除用户
	 *
	 *		因为此处操作的数据库表不是 Member表，故不能调用UserController现有方法。
	 */
    public function changeStatus($method=null){
    	$id = array_unique((array)I('id',0));
    	$id = is_array($id) ? implode(',',$id) : $id;
    	if ( empty($id) ) {
    		$this->error('请选择要操作的数据!');
    	}
    	$map['uid'] =   array('in',$id);
    	switch ( strtolower($method) ){
			//教师状态（-1：已删除，0：禁用，1：正常）
    		case 'forbiduser':
    			$this->forbid('Teacher', $map );
    			break;
    		case 'resumeuser':
    			$this->resume('Teacher', $map );
    			break;
    		case 'deleteuser':
    			$this->delete('Teacher', $map );
    			break;
    		default:
    			$this->error('参数非法');
    	}
    }
    /**
     * 重置密码
     * @param string $id	需要重置密码的用户id
     * 
     * 		调用加密方法获取密文，修改数据。
     */
 	public function resetPassword($id=''){
 		if(!resetPwd($id)){
 			$this->error('重置密码失败！');
 		} else {
 			$this->success('重置密码（123456）成功！',Cookie('__forward__'));
 		}
 	}

	/**
	 * 教师详细信息
	 * 
	 * 		教师模型验证数据后修改教师信息。
	 * 		
	 * 		获取页面参数，查询教师详细信息。
	 */
	public function detail(){
		if(IS_POST){
			$teacherModel	=	D('Teacher');
			$teacher		=	$teacherModel->create();
			if (!$teacher){     // 如果创建失败 表示验证没有通过 输出错误提示信息
				$this->error($teacherModel->getError());
			}else{
				if($teacherModel->save($teacher)===false){
					$this->error('修改教师信息失败！');
				}else{
					$this->success("修改教师信息成功！",Cookie('__forward__'));
				}
			}
		}else {
			$uid		=	I('uid');
			$teacher	=	M('Teacher')->find($uid);
			$this->assign('_list', $teacher);
			$this->assign('TEACHER_PRO',C("TEACHER_PRO"));
			$this->assign('TEACHER_TITLE',C("TEACHER_TITLE"));
			$this->assign('TEACHER_COURSE',C("TEACHER_COURSE"));
			$this->display();
		}
	}
}